package com.oliet.common.vo.file;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.google.common.collect.Lists;
import com.oliet.entity.FileResources;
import lombok.Data;

import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author jiaZhenpeng
 * @Title: FileResourceVO
 * @Package com.oliet.common.vo.file
 * @Description: 文件资源
 * @date 2023-12-28 16:15
 */
@Data
public class FileResourceVO {

    /**
     * id
     */
    private Long id;
    /**
     * 文件名
     */
    private String fileName;
    /**
     * 前端使用的文件地址
     */
    private String showFilePath;
    /**
     * 文件后缀
     */
    private String fileSuffix;
    /**
     * 文件大小
     */
    private Long fileSize;
    /**
     * 文件大小(MB)
     */
    private String fileSizeMb;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date dateCreated;
    /**
     * 创建人
     */
    private String createdByName;
    /**
     * 班型
     */
    private String classType;
    /**
     * 班型名称
     */
    private String classTypeName;
    /**
     * 文件类型
     */
    private String fileType;
    /**
     * 文件类型名称
     */
    private String fileTypeName;
    /**
     * 保存类型
     */
    private String saveType;
    /**
     * 显示位置
     */
    private String displayPosition;
    /**
     * 显示位置名称
     */
    private String displayPositionName;



    public static List<FileResourceVO> poListConverVoList(List<FileResources> poList, String BASE_PATH, String UPLOAD_PATH) {
        List<FileResourceVO> result = Lists.newArrayList();
        if (CollectionUtil.isEmpty(poList)) {
            return result;
        }
        result = poList.stream().map(po -> {
            FileResourceVO vo = new FileResourceVO();
            BeanUtil.copyProperties(po, vo);
            //去掉url前面的UPLOAD_PATH  用截取字符串的方式
            vo.setShowFilePath(BASE_PATH + po.getFilePath().replace(UPLOAD_PATH, "").replaceAll("\\\\", "/"));
            if (ObjectUtil.isNotNull(po.getFileSize())) {
                double div = NumberUtil.div((long) po.getFileSize(), 1024 * 1024, 2);
                vo.setFileSizeMb(div + "MB");
            }
            return vo;
        }).collect(Collectors.toList());
        return result;
    }

}
